package asteroids.model.programs.parsing.statements;

import java.util.List;
import java.util.Map;

import be.kuleuven.cs.som.annotate.Basic;

import asteroids.model.Ship;
import asteroids.model.programs.parsing.types.Type;

/**
 * A class of statements.
 * 
 * @author Thijs Dieltjens - Wim Konings
 * @version 2.0
 */
public abstract class Statement {

	public Statement(int line, int column){
		this.line=line;
		this.column=column;
	}

	@Basic
	public int getLine(){
		return line;
	}

	private int line;

	@Basic
	public int getColumn(){
		return column;
	}

	private int column;

	public abstract void execute(Ship ship);

	public abstract List<String> getTypeCheckErrors(List<String> errors, Map<String, Type> globals);

	public abstract boolean containsActionStatement();
}
